Rust: Ownership
RustのOwnership
ある値を所有できる権利
値のownerは常に一人
参照を使えば他者に貸し出せる
RustのBorrowing
所有権は他者に譲渡(Rust: move)できる
変数代入時のsemantics
ownershipを移動したりしなかったりする3パターン
参考
/mrsekut-book-4297105594/278 (第7章 所有権システム)
この本、説明の粒度がちょうどよくてわかりやすい
カニ本の方は詳細に踏み込みすぎて、知りたい抽象度より低めなんだよな
詳しく知りたい場合はそっちの方が良いが、初回に知るには逆にノイズが多い
/mrsekut-book-4873118557/096 (4章 所有権)
#wip
コードを読んだ時に
どのタイミングでownershipが移動するのか
変数代入、match式、関数呼び出しなど
値のownerは誰か?
などがパッとわからないといけない?
owenershipが適用される対象は誰?
あらゆる値
値のownerは常に一人
Rustのlifetime
v1前まではGCあったらしい
/mrsekut-book-4297105594/279
Rust は Web ブラウザのような高い性能が求められるアプリケーションの開発や、OSの記述を含むシステムプログラミングを念頭に置いて設計されました。1.0のリリース前はGCを行う言語でしたが、性能面の懸念から目標とする用途では受け入れられず設計が変更されました。その過程で所有権という概念が採用され、GCを取り除くことに成功しました。
発展
/mrsekut-book-4297105594/285 (7-5 ムーブセマンティクス)
std::mem::forget
Box::into_raw
Box::leak
RustViz
https://github.com/rustviz/rustviz
所有権の感じをvisualizationしてくれるらしい
https://zenn.dev/karno/articles/630a64fbc9c65e29b566
https://zenn.dev/j5ik2o/articles/918c54411d5a61
https://qiita.com/ksato9700/items/312be99d8264b553b193